package com.aki.ai_property.controller;

import com.aki.ai_property.dto.SubleaderExportDto;
import com.aki.ai_property.dto.SubscriptionExportDto;
import com.aki.ai_property.entity.Subscription;
import com.aki.ai_property.service.intf.SubscriptionService;
import com.aki.ai_property.vo.PageBean;
import com.aki.ai_property.vo.Result;
import com.alibaba.excel.EasyExcel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 　　　　　　　　　,-､　　 　　　　　　　 ,.-､
 * 　　　　　　　 ./:::::＼　　　　　　　 ／::::ヽ
 * 　　　　　　　/::::::::::::;ゝ–——– ､:::::::::|
 * 　　　　　　 /,.-‐”"´ 　　　　　　 ＼ ::::::::|
 * 　　　　　／　 　　　　　　　　　 　 ヽ､::::|
 * 　　　　/　　　　●　　　 　 　 　 　　 　 　ヽ|
 * 　　 　 l　 　, , ,　　 　 　 　 　 　 ●　　　 l
 * 　　　 .|　　　 　　　　(_人__丿 　 　　､､､　 　|
 * 　 　 　l　　　　　　　　　　 　　　　　　 　　l
 * 　　　　` ､　　　　　　　　 　 　 　 　 　 　 /
 * 　　　　　　`ｰ ､__　　　 　 　 　　　　　　 ／
 * 　　　　　　　　　/`”’ｰ‐‐——‐‐‐┬”’"
 *
 * @author zhu
 * @DATE 2022/8/27
 */
@RestController
@RequestMapping("api/subscription/")
public class SubscriptionController {

    @Autowired
    private SubscriptionService service;

    /**
     * 新增
     * @param subscription
     * @return
     */
    @PostMapping("save.do")
    public Result save(Subscription subscription){
        return service.save(subscription);
    }

    /**
     * 修改
     * @param subscription
     * @return
     */
    @PostMapping("update.do")
    public Result update(Subscription subscription){
        return service.update(subscription);
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @GetMapping("delete.do")
    public Result delete(int id){
        return service.delete(id);
    }

    /**
     * 查询
     * @param name
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("page.do")
    public PageBean selectPage(String name, int page, int limit){
        return service.selectPage(name, page, limit);
    }

    @PostMapping("delids.do")
    public Result dels(int[] ids){
        return service.delIds(ids);
    }

    /**导出*/
    @GetMapping("download.do")
    public void download(HttpServletResponse response) throws IOException {
        //1.设置 响应消息头 下载
        response.setHeader("content-disposition","attachment;filename=subscription-"+System.currentTimeMillis()+".xlsx");
        //2.查询学员数据
        List<SubscriptionExportDto> list=service.all();
        //3.实现数据写出 Excel生成
        EasyExcel.write(response.getOutputStream(),SubscriptionExportDto.class).sheet(System.currentTimeMillis()+"").doWrite(list);
    }

    //导入
    @PostMapping("upload.do")
    public Result upload(MultipartFile file) throws IOException {
        return service.upload(file);
    }

    //查询性别人数
    @GetMapping("sextj.do")
    public Result sexTj(){
        return service.sextj();
    }



}
